package com.cll.prototype.common.dto;

import com.cll.prototype.common.dictionary.AjaxResultEnum;
import lombok.*;

import java.io.Serializable;

/**
 * 描述信息:
 * 前端ajax请求通用返回结果
 * @author CLL
 * @version 1.0
 * @date 2020/10/26 16:58
 */
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class AjaxResult implements Serializable {

    /**
     * 返回状态
     * 1：
     * 2：正常
     * 3：重定向，转发等
     * 4：客户端错误
     * 5：服务器错误
     */
    private Integer code;

    private String message;

    private Object data;

    /**
     * 无数据返回的正常返回结果
     * @return  正常返回
     */
    public static AjaxResult success() {
        return success(AjaxResultEnum.SUCCESS.getCode(), AjaxResultEnum.SUCCESS.getInfo(), null);
    }

    /**
     * 无数据返回的正常返回结果
     * @return  正常返回
     */
    public static AjaxResult success(AjaxResultEnum ajaxResultEnum) {
        return success(ajaxResultEnum.getCode(), ajaxResultEnum.getInfo(), null);
    }

    /**
     * 无数据返回的正常返回结果
     * @return  正常返回
     */
    public static AjaxResult success(String info) {
        return success(AjaxResultEnum.SUCCESS.getCode(), info, null);
    }

    /**
     * 无数据返回的正常返回结果
     * @return  正常返回
     */
    public static AjaxResult success(Integer code, String info) {
        return success(code, info, null);
    }

    /**
     * 无数据返回的正常返回结果
     * @return  正常返回
     */
    public static AjaxResult success(Object data) {
        return success(AjaxResultEnum.SUCCESS.getCode(), AjaxResultEnum.SUCCESS.getInfo(), data);
    }

    /**
     * 无数据返回的正常返回结果
     * @return  正常返回
     */
    public static AjaxResult success(String info, Object data) {
        return success(AjaxResultEnum.SUCCESS.getCode(), info, data);
    }

    /**
     * 无数据返回的正常返回结果
     * @return  正常返回
     */
    public static AjaxResult success(Integer code, String info, Object data) {
        return new AjaxResult(code, info, data);
    }

    /**
     * 无数据返回的错误的返回结果
     * @return  错误返回
     */
    public static AjaxResult error() {
        return error(AjaxResultEnum.ERROR.getCode(), AjaxResultEnum.ERROR.getInfo());
    }

    /**
     * 无数据返回的错误的返回结果
     * @return  错误返回
     */
    public static AjaxResult error(String info) {
        return error(AjaxResultEnum.ERROR.getCode(), info);
    }

    /**
     * 无数据返回的错误的返回结果
     * @return  错误返回
     */
    public static AjaxResult error(Integer code, String info) {
        return new AjaxResult(code, info, null);
    }
}